package trastienda.bean;

import javax.faces.application.FacesMessage;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import trastienda.dao.CategoriaDAO;
import trastienda.dao.ProductoDAO;
import trastienda.dao.RolDAO;
import trastienda.excepcion.DAOExcepcion;
import trastienda.modelo.Categoria;
import trastienda.modelo.Producto;
import trastienda.modelo.Rol;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.faces.model.SelectItem;

public class CategoriaBean {
	private int id_categoria;
	private String nombre;
	private String descripcion;
	private int idCategoria;
	private ArrayList listaCategorias = new ArrayList();
	private Collection<Categoria> lista;
	
	public int getId_categoria() {
		return id_categoria;
	}

	public void setId_categoria(int id_categoria) {
		this.id_categoria = id_categoria;
	}

	public Collection<Categoria> getLista(){
		
		CategoriaDAO dao = new CategoriaDAO();		
		try {
			System.out.println("lista categoria");
			lista = dao.listar();
			
		} catch (DAOExcepcion e) {			
			e.printStackTrace();
		}
		return lista;
	}
	
	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public int getIdCategoria() {
		return idCategoria;
	}

	public void setIdCategoria(int idCategoria) {
		this.idCategoria = idCategoria;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	// listar eliminar editar nuevo insertar actualizar

	

	public void setListaCategorias(ArrayList listaCategorias) {
		this.listaCategorias = listaCategorias;
	}

	public String listar() {
		System.out.println("CategoriaBean: listar()");
		CategoriaDAO dao = new CategoriaDAO();
		ExternalContext context = FacesContext.getCurrentInstance()
				.getExternalContext();
		HttpSession session = (HttpSession) context.getSession(true);
		try {
			session.setAttribute("CATEGORIAS_LISTADO", dao.listar());
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return "categoriaBean_listar";
	}

	public String eliminar() {
		ExternalContext context = FacesContext.getCurrentInstance()
				.getExternalContext();
		HttpServletRequest request = (HttpServletRequest) context.getRequest();
		System.out.println(request.getParameter("nombre"));
		CategoriaDAO dao = new CategoriaDAO();
		try {
			dao.eliminar(Integer.valueOf(request.getParameter("idCategoria")));// /----
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return listar();
	}

	public String editar() {
		ExternalContext context = FacesContext.getCurrentInstance()
				.getExternalContext();
		HttpServletRequest request = (HttpServletRequest) context.getRequest();
		CategoriaDAO dao = new CategoriaDAO();
		try {
			Categoria cat = dao.obtener(Integer.valueOf(request
					.getParameter("idCategoria")));
			System.out.println(cat.getIdCategoria());
			System.out.println(cat.getNombre());
			System.out.println(cat.getDescripcion());
			request.setAttribute("categoriaBean", cat);
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return "categoriaBean_editar";
	}

	public String nuevo() {
		return "categoriaBean_nuevo";
	}

	public String insertar() {
		System.out.println(idCategoria);
		System.out.println(nombre);
		System.out.println(descripcion);
		Categoria cat = new Categoria();
		cat.setIdCategoria(idCategoria);
		cat.setNombre(nombre);
		cat.setDescripcion(descripcion);

		CategoriaDAO dao = new CategoriaDAO();
		try {
			dao.insertar(cat);
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return listar();
	}

	public String actualizar() {
		Categoria cat = new Categoria();
		cat.setIdCategoria(idCategoria);
		cat.setNombre(nombre);
		cat.setDescripcion(descripcion);

		CategoriaDAO dao = new CategoriaDAO();
		try {
			dao.actualizar(cat);
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return listar();
	}

}
